import Vue from 'vue'
import App from './App.vue'
import router from './router'
import store from './store'
import ElementUI from 'element-ui';
import axios from 'axios'
import { MessageBox } from 'element-ui';
import 'element-ui/lib/theme-chalk/index.css'; // 补充ElementUI样式导入（否则组件无样式）
Vue.use(ElementUI)
// 创建带拦截器的axios实例
console.log(1111);

const instance = axios.create({
  
  timeout: 5000 // 补充超时时间，避免请求一直挂起
});
instance.interceptors.request.use(
  (config) => {
    // 从 localStorage 获取 token
    const token = localStorage.getItem('token');
    if (token) {
      // 后端通常要求 token 格式为 "Bearer + 空格 + token值"（按后端要求调整）
      config.headers.Authorization = `Bearer ${token}`;
    }
    return config;
  },
  (error) => {
    return Promise.reject(error);
  }
);
// 响应拦截器（处理401等错误）
instance.interceptors.response.use(
  (response) => {
    return response; // 正常响应直接返回
  },
  (error) => { // 错误处理（比如401）
    if (error.response && error.response.status === 401) {
      MessageBox.alert("登录已过期，请重新登录", "错误", {
        type: "error",
        confirmButtonText: "去登录"
      }).then(() => {
        localStorage.removeItem("token");
        window.location.reload(); // 刷新页面跳登录（或用router.push('/login')）
      });
    }
    return Promise.reject(error); // 继续抛出错误，让组件的catch能捕获
  }
);

// 全局挂载带拦截器的实例（关键！之前挂载的是原生axios）
Vue.prototype.$axios = instance;

Vue.config.productionTip = false;

new Vue({
  router,
  store,
  render: h => h(App)
}).$mount('#app');